package Test01;

public class Test01 {
    public static void main(String[] args) {
        Solution solution=new Solution();
        int[] a={0,1,2,2,3,0,4,2};
        int n=2;
        int i = solution.removeElement(a, n);
        System.out.println(i);

    }
}

class Solution {
//    public int removeElement(int[] nums, int val) {
//        /*
//        * 拷贝覆盖
//        * 思路：
//        *   将不同的数覆盖住相同的数
//        *   1.创建一个新下标ans，当val与num[i]不同时，ans++，nums[ans]=num，记录不同的数
//        *   2.如果相同，那么不管，继续下去,最后返回一个ans的新数组
//        * */
//        int ans=0;
//        for(int num:nums){
//            if(num!=val){
//                nums[ans]=num;
//                ans++;
//            }
//        }
//        return ans;
//    }
//
    /*
    * 交替移除
    * 思路：
    *   1.通过将相同的移除到最后一位来移除数值
    *
    * */
    public int removeElement(int[] nums, int val) {
        int ans=nums.length;
        for (int i=0;i<ans;){
            if(nums[i]==val){
                nums[i]=nums[ans-1];
                ans--;
            }
            else{
                i++;
            }
        }
        return ans;
    }
}
